package com.heima.pojo;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 商品实体类 (对应 tb_sku 表)
 *
 * @author 自动生成
 */
@Data
@TableName("tb_sku") // MyBatis-Plus 注解：指定表名
public class Sku implements Serializable {
    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 商品ID (主键)
     * 数据库类型: bigint
     * 注意: 使用 @JsonFormat 将 Long 序列化为 String，防止前端精度丢失
     */
    @TableId(value = "sku_id", type = IdType.NONE)
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Long skuId;

    /**
     * 商品名称
     * 数据库类型: varchar(50), NOT NULL
     */
    @TableField("sku_name")
    private String skuName;

    /**
     * 商品图片 (URL 或路径)
     * 数据库类型: varchar(500), NOT NULL
     */
    @TableField("sku_image")
    private String skuImage;

    /**
     * 基础价格 (单位：分)
     * 数据库类型: int, 默认值 1, NOT NULL
     */
    @TableField("price")
    private Integer price;

    /**
     * 商品类别ID
     * 数据库类型: int, NOT NULL
     * 外键关联: tb_sku_class(class_id)
     */
    @TableField("class_id")
    private Integer classId;

    /**
     * 是否打折促销
     * 数据库类型: tinyint(1), 默认值 0, 可为 NULL
     * Java 中使用 Boolean 接收 (0=false, 1=true)
     */
    @TableField("is_discount")
    private Boolean isDiscount;

    /**
     * 净含量/规格
     * 数据库类型: varchar(20), 可为 NULL
     */
    @TableField("unit")
    private String unit;

    /**
     * 品牌名称
     * 数据库类型: varchar(50), NOT NULL
     */
    @TableField("brand_Name")
    private String brandName;

    /**
     * 创建时间
     * 数据库类型: datetime, 可为 NULL
     */
    @TableField(value = "create_time", fill = FieldFill.INSERT)
    private LocalDateTime createTime;

    /**
     * 修改时间
     * 数据库类型: datetime, 可为 NULL
     * 可配合 MyBatis-Plus 自动填充
     */
    @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;

    private String className;

}